Untiy 笔记 您所在的位置:网站首页 unity canvas Untiy 笔记

Untiy 笔记

2023-04-04 16:09| 来源: 网络整理| 查看: 265

这是一个整合和翻译,利用写笔记的方式去理解 Unity。

▌Canvas 帆布 :Canvas 是一个 GameObject,上面有 Canvas 组件(Component)所有 UI 元件都必须是 Canvas 的子元件使用 EventSystem 进行事件处理如果同时存在多个 Canvas,Sort Order 值大的显示在前

创建新的 UI 元件时会自动创建 Canvas,并为此 Canvas 的子元件。

▌Draw order of elements 绘制元件的次序 :

按照 Hierarchy 层次结构中显示的顺序绘制。如果两个UI元件重叠,则后一个元件将显示在前一个元件的顶部。

可以通过在 Transform component 的这些方法从脚本控制顺序:

GetSiblingIndex()SetAsFirstSibling()SetAsLastSibling()SetSiblingIndex(int index)

GetSiblingIndex() : 获取 sibling 索引

如果 GameObject 共享相同的父级,这些 GameObject 被称为 sibling。简单来讲就是同级。

sibling 索引显示每个 GameObject 在此 sibling Hierarchy 层次结构中的位置。

SetAsFirstSibling() : 设定为 sibling 的第一个SetAsLastSibling() : 设定为 sibling 的最后一个SetSiblingIndex(int index) : 直接设定 sibling 索引

更多可参看:

Unity - Scripting API: Transform.GetSiblingIndexUnity - Scripting API: Transform.SetAsFirstSibling Unity - Scripting API: Transform.SetAsLastSibling Unity - Scripting API: Transform.SetSiblingIndex

▌Render Modes 渲染模式 :Screen Space - OverlayScreen Space - CameraWorld Space▌Screen Space - Overlay 屏幕空间 - 叠加 :

将 UI 元件放置在 scene 场景上,如果调整屏幕大小或更改分辨率,Canvas将自动更改大小以匹配此大小。

▌Screen Space - Camera 屏幕空间 - 相机 :

Canvas 放置在指定的 Camera 前的既定距离。

Rect Transform会被锁定Canvas 的宽高会保持和屏幕的宽高一致相机设置会影响 UI 的外观▌World Space 世界空间 :

视为三維物品。

Canvas 的大小可以由 Rect Transform 手动设置。

UI 元件将基于 3D 放置在场景中的其他对象的前面或后面呈现。这对于要成为世界一部分的 UI 非常有用。这也被称为 diegetic interface (叙事界面)。

更多可参看:

Unity3D学习笔记uGUI(9):Canvas详述-腾讯游戏学院 Unity学习笔记——UGUI Canvas - 掘金unity 搞懂Canvas的Render Mode的三种模式 - fdyshlk的博客 - CSDN博客

▌Render Modes 下的渲染优先级:▌Screen Space - Overlay 的渲染顺序:

当有多个 canvas 并且渲染模式都为 Overlay。由 Sort Order 决定的,值越大的越后渲染。

不受摄像机的 Depth 值影响。

▌Screen Space-Camera 的渲染顺序:

依次由 Render Camera 的 Depth 值、Sorting Layer 先后顺序、Order in Layer 值决定

Render Camera 不同时,由 Render Camera 的 Depth 决定Render Camera 相同时,由 Sorting Layer 先后顺序决定Render Camera 相同时,Sorting Layer 相同,由 Order in Layer 值决定

当有多个 canvas 并且渲染模式都为 Camera由 Rendener Camera 的 Depth 值决定,值越大越后渲染。

如果 Depth 值相同,那么由 Sorting Layer 顺序决定,顺序越后则越后渲染。

如果 Depth 值和 Layer 值都相同的情况下,渲染顺序由 Order in Layer 决定,值越大越后渲染。(注意:若Rendener Camera都是同一个摄像机,则不考虑Depth情况)

▌World Space 的渲染顺序:

当有多个canvas并且 Render Modes 都为 World Space 。

这种情况下,渲染顺序由canvas组件下的 Sorting Layer 顺序决定,顺序越后则越后渲染。

如果 Layer 值都相同的情况下,渲染顺序由Order in Layer决定,值越大越后渲染。

特别注意,当 Layer 和 Order 值都相同的情况下,此时渲染顺序由canvas距离Render Camera的距离决定,距离越近越后渲染。( 只有World模式有这种情况,因其他模式下canvas都是位置固定不可移动的。并且以上情况只考虑canvas都出现在Render Camera摄像范围的情况下。)

▌当有多个 canvas 并且渲染模式都存在的情况下:

Screen Space - Overlay 的 canvas 永远是最后渲染。同为 Screen Space - Overlay 的 canvas 在 Sort Order 的值越大时越后渲染。

Screen Space - Overlay 和 Screen Space-Camera 同时存在的情况下有两种情况:

若使用的不同的相机,则由摄像机的 Depth 决定,值越大越后渲染。若使用的是相同的相机,则是由 canvas 距离摄像机的距离决定的,距离越近的越后渲染。

交叉參考修改至:

UGUI渲染优先级 - zhangzhen551的专栏 - CSDN博客UGUI学习(二)渲染模式和层级顺序 - nanzhengluo的博客 - CSDN博客

[Render Modes 下的渲染优先级] 的部分我不懂,所以纯粹复制整合。

___

参考至:

Unity - Manual: Canvas UI Canvas - Unity UGUI的深度 - 简书 Unity - Scripting API: Transform.GetSiblingIndex Unity - Scripting API: Transform.SetAsFirstSibling Unity - Scripting API: Transform.SetAsLastSibling Unity - Scripting API: Transform.SetSiblingIndex Unity3D学习笔记uGUI(9):Canvas详述-腾讯游戏学院Unity学习笔记——UGUI Canvas - 掘金 unity 搞懂Canvas的Render Mode的三种模式 - fdyshlk的博客 - CSDN博客 UGUI渲染优先级 - zhangzhen551的专栏 - CSDN博客 UGUI学习(二)渲染模式和层级顺序 - nanzhengluo的博客 - CSDN博客

___

Untiy 笔记 - 目录 - 知乎



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有